const path = require('path');
const { execSync } = require('child_process');
const dealSvg = require('./dealSvgUtil');


/**
 * 1.获取git暂存区的文件
 * 2.发现如果是svg，对其进行处理
 * 3.处理完成后添加到暂存区
 */
const main = () => {
  try {
    // 获取git暂存区的文件
    const stagedFilesOutPut = execSync('git diff --cached --name-only --diff-filter=ACM')
      .toString()
      .trim();

    if (!stagedFilesOutPut) {
      console.log('没有改动文件');
      return;
    }

    const stagedAllFiles = stagedFilesOutPut.split('\n');
    const stagedFiles = stagedAllFiles.filter((file) => file.toLowerCase().endsWith('.svg'));

    // 已处理过的svg文件路径
    let addedSvgFiles = [];

    if (stagedFiles.length > 0 && stagedFiles[0] !== '') {
      console.log('开始处理svg文件');
      stagedFiles.forEach((file) => {
        const absPath = path.join(process.cwd(), file);
        const isSvgChanged = dealSvg(absPath);
        if (isSvgChanged) {
          addedSvgFiles.push(file);
        }
      });

      if (addedSvgFiles.length) {
        const gitAddCommand = `git add ${addedSvgFiles.join(' ')}`;
        try {
          execSync(gitAddCommand); //将处理后的文件加进git add
        } catch (error) {
          console.error('git add 出错:', error);
        }
      }
    } else {
      console.log('没有svg文件需要处理');
    }
  } catch (e) {
    console.log('svg处理执行出错：', e);
  }

}

main();
